package com.example.djetpack.room

import androidx.annotation.NonNull
import androidx.room.*

@Entity(tableName = "test_cache")
class Cache(
    //对于一个表来说必须存在一个不为null 的主键,也就是必须要标记PrimaryKey和NonNull两个注解
    //PrimaryKey注解的`autoGenerate`属性意味该主键的值，是否由数据库自动生成
    //由于我们这里是字符串的主键key，所以我们想要自己指定他得值，
    //如果是Long,INT类型的主键key，可以选择由数据库自动生成
    @PrimaryKey(autoGenerate = false)
    @NonNull
    var key:String = "",

    @ColumnInfo(name = "cache_data")
    var data:String = "",

    //如果不想把该字段保存在表中,可以用这个注解忽略掉
    @Ignore
    var timeStamp:Long? = null,

    //如果想让内嵌对象中的字段也一同映射成 数据库表的字段，可以使用Embedded注解。
    // 此时User对象中所有字段也会一同出现在cache表中
    //他又要求 User 对象必须也使用Entity注解标记，并且拥有一个不为空的主键才可以
    @Embedded
    var user:User?=null

    //对于一个Room数据库的表而言，还有很多其他注解和属性可以使用，诸如索引，外键，
    // 关系数据支持的特性room都支持。但对于客户端来说一般也用不到，以上这些就够用了。
)